// 首页数据管理
import { reqGetDetailInfo, reqAddOrUpdateShopCart } from "@/api"
import { getUUID } from '@/utils/uuid_token'

// state: 数据对象
const state = {
    // 商品详情数据
    detailList: {},
    // 游客临时身份
    uuid_token: getUUID()
};
// mutations：专门用于修改state中的数据
const mutations = {
    // 修改state中的商品详情分类数据
    GETDETAILLIST(state, detailList) {
        state.detailList = detailList
    },
};
// action：书写业务逻辑，进行异步处理
const actions = {
    // 发送请求获取商品详情数据
    async getDetailList({ commit }, skuId) {
        let result = await reqGetDetailInfo(skuId);
        if (result.code == 200) {
            commit('GETDETAILLIST', result.data)
        }
    },
    // 商品添加到购物车
    async addOrUpdateShopCart({ commit }, { skuId, skuNum }) {
        // 发送请求将商品数据添加到购物车中，并没有将数据存储到vuex中
        let result = await reqAddOrUpdateShopCart(skuId, skuNum);
        if (result.code == 200) {
            // 返回成功的标记
            return 'ok'
        } else {
            // 返回失败的标记
            return Promise.reject(new Error('faile'))
        }

    }
};
// getters：类似计算属性
const getters = {
    // 获取左上角导航数据
    categoryView(state) {
        return state.detailList.categoryView || {};
    },
    // 获取右上角以及放大镜图片数据
    skuInfo(state) {
        return state.detailList.skuInfo || {};
    },
    // 获取右边中间商品信息数据
    spuSaleAttrList(state) {
        return state.detailList.spuSaleAttrList || [];
    }
}

export default {
    state,
    mutations,
    actions,
    getters
}